/*
 * artista.h
 *
 *  Created on: 19 de Out de 2011
 *      Author: pedrocouto
 */

#ifndef ARTISTAS_H_
#define ARTISTAS_H_

#include <string>
#include <vector>

#include "espetaculo.h"
#include "calendario.h"
#include "tipos_artista.h"

using std::string;
using std::vector;

class Espetaculo;
class TipoArtista;

class Artista {
protected:
	long bi;
	string prim_nome; string ult_nome;
public:
	vector <TipoArtista *> tipo_s;
	vector <Espetaculo *> espetaculos;

	Artista();
	Artista(long _bi, string _prim_nome, string _ult_nome);
	 ~Artista();

	//metodos get
	long getBI() { return bi; }
	string getPrimNome() { return prim_nome; }
	string getUltNome() { return ult_nome; }


	//metodos set
	void setBI(long _bi) { bi = _bi; }
	void setPrimNome(string _prim_nome) { prim_nome = _prim_nome; }
	void setUltNome(string _ult_nome) { ult_nome = _ult_nome; }


	void imprimeTipo_s();
	void inserirTipo_s(TipoArtista * ta) { tipo_s.push_back(ta); }
	void removerTipo_s(int valor) { tipo_s.erase(tipo_s.begin()+valor); }
	unsigned int numTipo_s() { return tipo_s.size(); }

	void imprimeEspetaculos();
	void inserirEspetaculo(Espetaculo *espetaculo){ espetaculos.push_back(espetaculo); }
	void removerEspetaculo(unsigned int id);
	unsigned int numEspetaculos() { return espetaculos.size(); }
};


class Grupo_Artistas {
public:
	vector <Artista *> Artistas;
	int numArtistas() { return Artistas.size(); }
	void adicionaArtista(Artista *artista) { Artistas.push_back(artista); }
	void removeArtista(int valor) { Artistas.erase(Artistas.begin()+valor); }
	void alteraArtista();
	void mostraArtista();
};

#endif /* ARTISTAS_H_ */
